package io.gitee.milklynk.vo.response;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;

/**
 * 对话补全请求的用量信息。
 */
@Data
public class Usage {
    /**
     * 模型 completion 产生的 token 数。
     */
    @JSONField(name = "completion_tokens")
    private Integer completionTokens;

    /**
     * 用户 prompt 所包含的 token 数。该值等于 prompt_cache_hit_tokens + prompt_cache_miss_tokens
     */
    @JSONField(name = "prompt_tokens")
    private Integer promptTokens;

    /**
     * 用户 prompt 中，命中上下文缓存的 token 数。
     */
    @JSONField(name = "prompt_cache_hit_tokens")
    private Integer promptCacheHitTokens;

    /**
     * 用户 prompt 中，未命中上下文缓存的 token 数。
     */
    @JSONField(name = "prompt_cache_miss_tokens")
    private Integer promptCacheMissTokens;

    /**
     * 该请求中，所有 token 的数量（prompt + completion）。
     */
    @JSONField(name = "total_tokens")
    private Integer totalTokens;

    /**
     * completion tokens 的详细信息。
     */
    @JSONField(name = "completion_tokens_details")
    private CompletionTokensDetails completionTokensDetails;


    /**
     * completion tokens 的详细信息。
     */
    @Data
    public static class CompletionTokensDetails {
        /**
         * 推理模型所产生的思维链 token 数量
         */
        @JSONField(name = "reasoning_tokens")
        private Integer reasoningTokens;
    }
}
